// -*- IDL -*-

//=============================================================================
/**
 *  @file   GSSUP.idl
 *
 *  @author Object Management Group
 */
//=============================================================================

#ifndef _GSSUP_IDL_
#define _GSSUP_IDL_

#include <orbsvcs/CSI.idl>
//import ::CSI;

module GSSUP {
  typeprefix GSSUP "omg.org";
  // The GSS Object Identifier allocated for the
  // username/password mechanism is defined below.
  //
  // { iso-itu-t (2) international-organization (23) omg (130)
  // security (1) authentication (1) gssup-mechanism (1) }
  const CSI::StringOID GSSUPMechOID = "oid:2.23.130.1.1.1";

  // The following structure defines the inner contents of the
  // username password initial context token. This structure is
  // CDR encapsulated and appended at the end of the
  // username/password GSS (initial context) Token.
  struct InitialContextToken {
    CSI::UTF8String username;
    CSI::UTF8String password;
    CSI::GSS_NT_ExportedName target_name;
  };

  typedef unsigned long ErrorCode;

  // GSSUP Mechanism-Specific Error Token
  struct ErrorToken {
    ErrorCode error_code;
  };

  // The context validator has chosen not to reveal the GSSUP
  // specific cause of the failure.
  const ErrorCode GSS_UP_S_G_UNSPECIFIED = 1;

  // The user identified in the username field of the
  // GSSUP::InitialContextToken is unknown to the target.
  const ErrorCode GSS_UP_S_G_NOUSER = 2;

  // The password supplied in the GSSUP::InitialContextToken was
  // incorrect.
  const ErrorCode GSS_UP_S_G_BAD_PASSWORD = 3;

  // The target_name supplied in the GSSUP::InitialContextToken does
  // not match a target_name in a mechanism definition of the target.
  const ErrorCode GSS_UP_S_G_BAD_TARGET = 4;

}; // GSSUP

#endif
